/*
  学习目标：TS-泛型函数
*/

import React, { useRef, useState } from 'react';

function sayHello<T>(aa: T) {
  return aa;
}

// 泛型函数调用时的两种写法：
// 1 省略泛型的写法
let result1 = sayHello('12'); //  接收一个字符串，返回的类型就是string
let result2 = sayHello(22); //  接收一个数字，返回的类型就是numer
let result3 = sayHello({}); //  接收一个数字，返回的类型就是numer

// 2. 完整的写法:
// 作用：主动说明泛型一定是什么类型
let result4 = sayHello<string>('123');
let result5 = sayHello<number>(123123);

// 需求：使用ref获取input元素，主动聚焦

export default function App() {
  // 1. 创建ref
  // 💥 调用时加上<>说明类型, 类似断言as
  const iptRef = useRef<HTMLInputElement>(null);

  return (
    <div>
      <input
        // 2 . 绑定dom
        ref={iptRef}
        type="text"
      />
      <button
        onClick={() => {
          iptRef.current?.focus();
        }}
      >
        点我激活input
      </button>
    </div>
  );
}
